Шпаргалка по использованию docker

1) Установка на Ubuntu:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin
docker --version

    2) Установка приложения через docker

    docker pull jetbrains/teamcity-server

    3) Запуск:

    docker run --name teamcity-server-instance \
    -v <path to data directory>:/data/teamcity_server/datadir \
    -v <path to logs directory>:/opt/teamcity/logs \
    -p <port on host>:8111 \
    jetbrains/teamcity-server

    4) Автозапуск после перезагрузки сервера:

    docker update --restart=always teamcity-server-instance 

    Чтиво за последнее время

    Попадос. Засеев Гурам. Мир EVO. нейросети, аграфы, древние, Джоре. Ну в общем то не особо захватывающий и новый сюжет. Читабельность 3/5

    Имя нам Легион. Дворничев Дмитрий, Лисицин Евгений. Сюжет: Одного товарища украли инопланетяне и заставляют выполнять задания внутри различного рода клонах. Начало интересное, потому скучновато. Не дочитал. Читабельность 3/5

    Разлом в Небесах. Гамильтон Питер. Сюжет: Корабль поколений. Летят. Уже начинают забывать зачем и куда. Но случается авария. И вдруг оказывается что корабль давно уже под контролем инопланетян. Читабельность 5/5

    Штурм. Панченко Андрей. Сюжет: звездолет спасается от неведомой (не раскрыто по сюжету) опасности в другую галактику. А она уже занята. Не дочитал, скучновато. Читабельность 3/5

    Звезданутый Технарь. Герко Гизум. Сюжет: Некий чел купил себе ржавое ведро и полетел в космос чтоб стать «космическим мусорщиком». Только всё пошло не так. Слишком много деталей, и вся книга одно сплошное выживание на взлете этого недокарабля. Интересно только пару страниц начала. Читабельность 2/5

    Шепот 1-3. Сиба С.И. Очередная книга из вселенной EVO. В принципе читабельно, но ничего нового. Но таки дочитал. Читабельность 4/5

    Вычислитель. Тетралогия. Громов Александр Николаевич. Перечитка, плюс третья книга вышла. Когда первый раз читал, еще её не было. В принципе нормально. Весь сюжет вокруг одного товарища который умеет хорошо просчитывать вероятность событий в голове. В первой-второй части есть даже некая любовная линия. В принципе читабельность 5/5

    Маска конструктра. Захар Зарипов. Сюжет: на марс прибывает первая колонизационнами миссия. Но всё идет не так (с). Исчезают инструменты и целые механизмы. Кто за этим стоит? Сюжет вроде и интересный, но написано так себе. Не дочитал. Читабельность 3/5

    Детское:

    Борис Жидков «Про обезьянку». Интересно. Но ребенку многие слова не понятны уже. Пришлось «переводить»

    1С и проблема чтения xlsx файлов с датами

    Проблема: при разборе файла формата xlsx часть дат в ячейках сдвигается ровнехонько на 4 года назад. Т.е. открываем файл экселем — видим 2026 год. Открываем файл при помощий табличного документа 1С — видим 2022.

    Долго думал.. Хорошо рядом человек оказался, который с этой проблемой уже сталкивался. Оказывается некоторые файлы xlsx сохраняются в формате в котором «эпоха» начинается с 1900г, а часть с 1904. И определить средствами 1С, в каком формате сохранен именно этот файл, нет никакой возможности — только самому делать поправку даты:

    ДатаВЯчейке=ДатаВЯчейке+1462 * 86400;

    Более подробно можно почитать тут

    Кто виноват и что делать (с)

    По моему тут дело в том, что большинству людей очень трудно посмотреть в зеркало и признать, что он видит главного виновника всех своих неудач в жизни.
    Кто-то валит всё на родителей, кто-то на начальство, на плохую жену, на власть, на законы…. А кто-то — на клятых москалей.
    Так гораздо проще жить.

    Не знаю кто (с)

    1С: Оптимизация времени разбора большого XLSX файла

    Для чтения и разбора файлов формата xlsx на 1С обычно используют следующую схему разбора файла:

    ТабличныйДокументХар = Новый ТабличныйДокумент; 
    ТабличныйДокументХар.Прочитать(парам.ВременныйФайл,СпособЧтенияЗначенийТабличногоДокумента.Текст);		
    // читаем каждый лист по отдельности
    Для Каждого ОбластьТД ИЗ ТабличныйДокументХар.Области Цикл
        ОбластьФайла = ТабличныйДокументХар.ПолучитьОбласть(ОбластьТД.Имя,);
        КолВоСтрокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоВертикали();
        КолВоКолонокФайла = ОбластьФайла.ПолучитьРазмерОбластиДанныхПоГоризонтали();
    	НачСтрока=3;КонСтрока=0;
        НачСтрока = ?(НачСтрока = 0, 2, НачСтрока);
        КонСтрока = ?(КонСтрока = 0, КолвоСтрокФайла, КонСтрока);						
        // перебираем все строки без шапки
        Для нСтрокаТФ = НачСтрока ПО КонСтрока Цикл      				
            ПКолонка=Формат(ном_кол, "ЧГ=0");
            Данные=ОбластьФайла.ПолучитьОбласть("R"+ПСтрока + "C1").ТекущаяОбласть.Текст;
        конеццикла
    конеццикла    
    

    Так-же встречается другой вариант, у которого есть особенность — не учитывается что файл может содержать листы:

    ТабличныйДокументХар = Новый ТабличныйДокумент; 
    ТабличныйДокументХар.Прочитать(парам.ВременныйФайл,СпособЧтенияЗначенийТабличногоДокумента.Текст);		
    КолВоСтрокФайла = ТабличныйДокументХар.ПолучитьРазмерОбластиДанныхПоВертикали();
    КолВоКолонокФайла = ТабличныйДокументХар.ПолучитьРазмерОбластиДанныхПоГоризонтали();  
    СтрокиДиапазона =   50000;
    НачСтрокаДиапазона = 3; 
    КонСтрокаДиапазона = мин(КолВоСтрокФайла, СтрокиДиапазона);
    КолВоСтрокФайла_часть = КолВоСтрокФайла;
    Пока  КолВоСтрокФайла_часть>0 Цикл
    	ОбластьФайла = ТабличныйДокументХар.ПолучитьОбласть(НачСтрокаДиапазона,1,КонСтрокаДиапазона,КолВоКолонокФайла);		
    	Если КолвоСтрокФайла = 0 Тогда ТабличныйДокументХар = Неопределено;КонецЕсли;
    	Для стр = 1  по КонСтрокаДиапазона-НачСтрокаДиапазона+1 Цикл  
                  Данные=ОбластьФайла.Область(стр,2).Текст;
    	КонецЦикла;  
    	КолВоСтрокФайла_часть = КолВоСтрокФайла_часть-СтрокиДиапазона;
    	НачСтрокаДиапазона = НачСтрокаДиапазона +СтрокиДиапазона;
    	КонСтрокаДиапазона = КонСтрокаДиапазона +СтрокиДиапазона;
    КонецЦикла;

    Если сравнивать производительность каждого метода, то выходит следующая картина (для файла размером 254 тыс строк):

    Метод 1Метод 2
    Время работы кода1 784 сек714 сек

    1 2 3 313